SELinux(Security-Enhanced Linux) 가이드

📌 SELinux란?

SELinux는 미국 국가안보국(NSA)에서 개발한 Linux 커널 보안 모듈입니다. 기존 Linux의 임의 접근 제어(DAC, Discretionary Access Control)에 더해 강제 접근 제어(MAC, Mandatory Access Control)를 제공하여 보안을 강화합니다.

🤔 왜 SELinux를 사용해야 하나요?

기존 Linux 보안의 한계

일반적인 Linux 시스템의 보안은 다음과 같은 한계가 있습니다:

단순한 권한 체계

권한 상승 취약점

SELinux의 장점

세분화된 접근 제어

최소 권한 원칙 실현

보안 격리

🌐 어떤 환경에서 SELinux를 사용해야 할까요?

1. 기업 환경

# 예: 웹 서버와 데이터베이스 서버 분리
# 웹 서버는 특정 포트와 디렉토리만 접근 가능
httpd_t context → 80/443 포트, /var/www/html
# 데이터베이스는 자신의 데이터 디렉토리만 접근 가능
mysqld_t context → /var/lib/mysql

2. 공공기관 및 금융권

3. 멀티 테넌트 환경

📊 Ubuntu vs Rocky Linux vs SELinux 비교

Ubuntu (기본 AppArmor 사용)

장점:
- 사용이 간단하고 직관적
- 설정이 비교적 쉬움
- 널리 사용되어 참고자료가 많음

단점:
- 보안 정책이 덜 세밀함
- 강제 접근 제어가 제한적

Rocky Linux (SELinux 기본 탑재)

장점:
- RHEL과 완벽한 호환성
- 기업 환경에 적합한 보안 정책
- 세밀한 접근 제어 가능

단점:
- 학습 곡선이 가파름
- 초기 설정이 복잡할 수 있음

SELinux 적용 시스템

장점:
- 매우 세밀한 접근 제어
- 보안 정책의 중앙 관리
- 시스템 전반적인 보안 강화

단점:
- 설정이 복잡하고 어려움
- 잘못 설정 시 서비스 장애 가능성
- 트러블슈팅이 어려울 수 있음

🎯 SELinux 사용이 특히 권장되는 상황

웹 서버 운영

데이터베이스 서버

컨테이너 환경